<?php
/**
  * Klasse Validation
  * @param   : $checkData, $checkCol, $error, $message, $id
  *
  * @info    : Steuert die Formular Validierung
  *
  * @e.datum : 12.12.2010
  * @l.datum : 29.12.2010
  * @version : beta
 **/
class vali{

  private $checkData=array();
  private $checkCol=array();
  private $error=array();
  private $message;
  private $id;


  /**
    * Konstruktor
    * @param :
   **/
  public function  __construct($data, $col, $id) {
    $this->checkData=$data;
    $this->checkCol=$col;
    $this->message="";
    $this->id=$id;
  }


   /**
    * Destruktor
    * @param :
   **/
  public function  __destruct() {
    $this->checkData=null;
    $this->checkCol=null;
    $this->error=null;
  }


   /**
    * ()
    * @param : &$colum
   **/
  public function fuVali(&$colum){
    include_once 'Zend/Validate.php';
    include_once 'Zend/Validate/EmailAddress.php';
    include_once 'Zend/Validate/Date.php';
    include_once 'Zend/Validate/Int.php';
    include_once 'Zend/Validate/StringLength.php';
    include_once 'Zend/Validate/Alnum.php';
    include_once 'Zend/Validate/Alpha.php';
    include_once 'Zend/Validate/Regex.php';
    include_once 'Zend/Validate/Digits.php';
    
    /* isset -> alle
     * string -> 3-30 (erste bruchstaben groß)
     * nummer
     * datum
     * email
     */

    $strError="";
    $i=0;
    foreach ($this->checkCol as $col){
      if($col['active']==true){
        if(!isset($this->checkData[$col['name']])||$this->checkData[$col['name']]=="")
            {
            if($col['required'])
            {
              $colum[$i]['err']="Bitte geben Sie einen Wert ein";
              $strError="Fehler";
            }
            } else {
              if($col['validate']=="email"){  //eMail
                $validator = new Zend_Validate_EmailAddress();
                if ($validator->isValid($this->checkData[$col['name']])) {
                  // Email Adresse scheint gültig zu sein
                } else {
                  $colum[$i]['err']="Das Format der E-Mail-Adresse ist nicht korrekt";
                  $strError="Fehler";
                  // Email Adresse ist ungültig, drucke die Gründe hierfür
                  /*foreach ($validator->getMessages() as $message) {
                      echo "$message\n";
                    }*/

                  //print_r($validator->getMessages());
                }
              }
              
              if($col['validate']=="string"){ //string
                  $this->checkData[$col['name']] = str_replace(array(".", ",", ";", ":", "-", "(", ")", "/", "\\"), "", $this->checkData[$col['name']]);
                $validator = new Zend_Validate_Alnum(true);
                if ($validator->isValid($this->checkData[$col['name']])) {
                  // Der Wert enthält nur erlaubte Zeichen
                } else {
                  $colum[$i]['err']="Die eingegebene Zeichenfolge enthält ungültige Zeichen";
                  $strError="Fehler";
                  //print_r($validator->getMessages());
                }
                $validator = null;

                //$validator = new Zend_Validate_StringLength(array('min' => 3, 'max' => 30));
                $validator = new Zend_Validate_StringLength();
                $validator->setMin(2);
                $validator->setMax(150);
                if($validator->isValid($this->checkData[$col['name']])){

                } else {
                  $colum[$i]['err']="Die eingegebene Zeichenfolge ist entweder zu kurz oder zu lang";
                  $strError="Fehler";
                  //print_r($validator->getMessages());
                }
                //$validator->isValid("Test"); // Gibt true zurück
                //$validator->isValid("Testing"); // Gibt true zurück
              }

              if($col['validate']=="regex"){ // regex

                      if(preg_match(utf8_decode($col['value']), $this->checkData[$col['name']]) != 0)
                  {
//                $validator = new Zend_Validate_Regex($col['value']);
//
//                if($validator->($this->checkData[$col['name']])){
                  // Gibt true zurück
                } else {
                  $colum[$i]['err']="Die eingegebene Zeichenfolge entspricht nicht dem definierten Format";
                  $strError="Fehler";
                  //print_r($validator->getMessages());
                }
                //$validator->isValid(1234.5); // Gibt false zurück
                //$validator->isValid('1,234'); // Gibt true zurück

              }

              if($col['validate']=="alpha"){ // alpha
                  $this->checkData[$col['name']] = str_replace(array(".", ",", ";", ":", "-", "(", ")", "/", "\\"), "", $this->checkData[$col['name']]);
                $validator = new Zend_Validate_Alpha(true);
                if($validator->isValid($this->checkData[$col['name']])){
                  // Gibt true zurück
                } else {
                  $colum[$i]['err']="Die eingegebene Zeichenfolge enthält ungültige Zeichen";
                  $strError="Fehler";
                  //print_r($validator->getMessages());
                }
                //$validator->isValid(1234.5); // Gibt false zurück
                //$validator->isValid('1,234'); // Gibt true zurück
              }

              if($col['validate']=="numeric"){ // numeric
                $validator = new Zend_Validate_Digits();
 
                if($validator->isValid($this->checkData[$col['name']])){
                  // Gibt true zurück
                } else {
                  $colum[$i]['err']="Die eingegebene Ziffernfolge ist ungültig";
                  $strError="Fehler";
                  //print_r($validator->getMessages());
                }
                //$validator->isValid(1234.5); // Gibt false zurück
                //$validator->isValid('1,234'); // Gibt true zurück
              }

              if($col['validate']=="date"){   //date
                
                $validator = new Zend_Validate_Regex("/^[0123]?\d\.[01]?\d\.\d{4}$/");

                if($validator->isValid($this->checkData[$col['name']])){
                  // Gibt true zurück
                } else {
                  $colum[$i]['err']="Das eingegebene Datum ist nicht gültig";
                  $strError="Fehler";
                  //print_r($validator->getMessages());
                }
                
                
//                $validator = new Zend_Validate_Date();
//                $validator->setFormat('dd MM yyyy');
//                $validator->setLocale('de');
//                if($validator->isValid($this->checkData[$col['name']])){
//
//                } else {
//                  $colum[$i]['err']="Fehler";
//                  $strError="Fehler";
//                  print_r($validator->getMessages());
//                }
              }
              $validator=null;
    
        }
      }
      $i++;
    }
    
    if($strError!=""){
        $this->id--;
        if($this->id<0)
          $this->id=0;
    }
     
    return $this->id;
  }
}
?>
